import { Service } from 'egg';
import { ActiveAttributes } from '../model/active';

interface ActiveShareParams {
  userId: number;
  time: number;
  text: string;
  photos: string[];
}

export default class Active extends Service {

  /**
   * URL: /api/active/all 获取所有动态
   * @return {
   *   activeid   {number}    动态ID
   *   userId     {number}    动态发布者ID
   *   text       {string}    动态文本内容
   *   photos     {string}    动态附属图片
   *   time       {number}    动态发布时间
   * } 所有动态数据列表
   */
  async all() {
    const { ctx } = this;
    const actives = await ctx.model.Active.findAll();
    return ctx.helper.success(actives);
  }

  /**
   * URL: /api/active/share 分享动态
   * @param activeDetail 分享的动态信息
   *   userId     {number}    分享人ID
   *   text       {string}    分享文案
   *   photos     {string[]}  分享的附属图片
   *   time       {number}    分享时间
   * @return {
   *   activeId   {number}    动态ID
   *   userId     {number}    动态发布者ID
   *   text       {string}    动态文案
   *   photos     {string[]}    动态附属图片
   *   time       {number}    动态发布时间
   * } 所有动态数据列表
   */
  async share(activeDetail: ActiveShareParams) {
    const { ctx } = this;
    const active: Omit<ActiveAttributes, 'activeId'> = {
      userId: activeDetail.userId,
      text: activeDetail.text,
      photos: activeDetail.photos,
      time: activeDetail.time,
    };
    const save = await ctx.model.Active.create(active);
    return ctx.helper.success(save);
  }

  // /**
  //  * 统一格式化响应数据
  //  * @param actives 全部数据源
  //  * @return {
  //  *   id   {number}    动态ID
  //  *   userId     {number}    动态发布者ID
  //  *   text       {string}    动态文本内容
  //  *   photos     {string[]}    动态附属图片
  //  *   time       {number}    动态发布时间
  //  * } HTTP 响应内容
  //  */
  // private format() {
  // }
}
